package cn.psvmc.cxzapi.service.ticket;

import cn.psvmc.cxzapi.config.mybatisplus.service.impl.AbstractService;
import cn.psvmc.cxzapi.exception.ServiceException;
import cn.psvmc.cxzapi.mapper.ticket.TTicketCauseMapper;
import cn.psvmc.cxzapi.model.ticket.TTicketCause;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * 工单原因表 服务实现类
 * @Author auto
 * @Date 2024-08-12
 */
@Service
public class TTicketCauseService extends AbstractService<TTicketCauseMapper, TTicketCause> {

    @Resource
    private TTicketCauseMapper tTicketCauseMapper;

    /**
    * @Date auto 2024-08-12 新增工单原因表
    * @Param tTicketCause 工单原因表
    * @Return int
    */
    public int add(TTicketCause tTicketCause){
        return tTicketCauseMapper.insert(tTicketCause);
    }

    /**
    * @Date auto 2024-08-12 更新工单原因表
    * @Param tTicketCause 工单原因表模型
    * @Return int
    */
    public int edit(TTicketCause tTicketCause){
        // 通过id查询数据处理 详情
        TTicketCause originTTicketCause = this.detail(tTicketCause.getTcid());
        if(originTTicketCause == null){
            throw new ServiceException("未查询到对应的工单原因表信息！");
        }

        // 比较数据版本号
        if(!originTTicketCause.getRversion().equals(tTicketCause.getRversion())){
            throw new ServiceException("数据已更新，请刷新后重试！");
        }

        // 字段为null 不更新
        return tTicketCauseMapper.updateById(tTicketCause);
    }

    /**
    * @Date auto 2024-08-12 查询工单原因表详情
    * @Param id 唯一id
    * @Return cn.psvmc.cxzapi.model.ticket.TTicketCause
    */
    public TTicketCause detail(Integer id){
        return tTicketCauseMapper.selectById(id);
    }

    /**
    * @Date auto 2024-08-12 删除工单原因表
    * @Param id 唯一id
    * @Param rversion 版本号
    * @Return int
    */
    public int delete(Integer id, Integer rversion){
        // 查询工单原因表详情
        TTicketCause tTicketCause = this.detail(id);
        if(tTicketCause == null){
            throw new ServiceException("未查询到对应的工单原因表信息！");
        }

        // 比较数据版本号
        if(!rversion.equals(tTicketCause.getRversion())){
            throw new ServiceException("数据已更新，请刷新后重试！");
        }

        return tTicketCauseMapper.deleteById(id);
    }

    /**
     * @Description 管理列表
     * @Date 2024/8/12 22:53
     * @Author YWX
     * @Param [typeId]
     * @Return java.util.List<java.util.Map>
     **/
    public List<Map> listByTypeId(Integer typeId){
        return tTicketCauseMapper.listByTypeId(typeId);
    }

    /**
     * @Description 选择列表
     * @Date 2024/8/12 22:54
     * @Author YWX
     * @Param [typeId]
     * @Return java.util.List<java.util.Map>
     **/
    public List<Map> listByTypeIdForSel(Integer typeId){
        return tTicketCauseMapper.listByTypeIdForSel(typeId);
    }
}
